#include <stdlib.h>
#include <stdio.h>
#include "graphe.H"
#include "tab_arc.H"

void initialiserTabArc(Tab_Arc * t)
{
        (*t).capacite=1;
        (*t).ad=(Arc*)malloc(sizeof(Arc));
        (*t).derniere_position=0;
}

void testamentTabArc(Tab_Arc * t)
{
        if ((*t).ad != 0)
        {
                free((*t).ad);
                (*t).ad=0;
                (*t).capacite=0;
                (*t).derniere_position=0;
        }
}


void ajoutArc(Tab_Arc *t, Arc *e)
{
        int i;
        if( (*t).capacite == (*t).derniere_position )
        {
                Arc * temp=(*t).ad;
                (*t).ad=(Arc*)malloc(((*t).capacite*2)*(sizeof(Arc)));
                for( i=0 ; i < t->capacite ; i++)
                {
                        (*t).ad[i]=temp[i];
                }
                (*t).capacite=(*t).capacite*2;
                free(temp);
        }
        (*t).ad[(*t).derniere_position]=*e;
        (*t).derniere_position++;
}

int rechercheArc(const Tab_Arc *t, Arc e)
{
        int i;
        for (i=0 ; i < t->derniere_position ; i++)
        {
                if( t->ad[i].distance == e.distance && t->ad[i].Depart == e.Depart && t->ad[i].Arrivee == e.Arrivee)
                {
                        return i;
                }
        }
        return -1;
}

void afficheTabArc(const Tab_Arc * A)
{
	int i=0;
	for(i=0 ; i < A->derniere_position ; i++)
	{
		printf("le nom de la ville de depart est : %s et le nom de la ville d'arrivee est %s et la distance est %d\n",
						A->ad[i].Depart->nomVille,A->ad[i].Arrivee->nomVille,A->ad[i].distance);
	}
}
